home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Interactive Reference Guide
/
C-C++ Interactive Reference Guide.iso
/
c_ref
/
csource5
/
332_01
/
clrtobot.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-01-07
|
4KB
|
109 lines
/****************************************************************/
/* Wclrtobot() routine of the PCcurses package */
/* */
/****************************************************************/
/* This version of curses is based on ncurses, a curses version */
/* originally written by Pavel Curtis at Cornell University. */
/* I have made substantial changes to make it run on IBM PC's, */
/* and therefore consider myself free to make it public domain. */
/* Bjorn Larsson (bl@infovox.se) */
/****************************************************************/
/* 1.4: Use of short wherever possible. Portability */
/* improvements: 900114 */
/* 1.3: MSC -W3, Turbo'C' -w -w-pro checkes: 881005 */
/* 1.2: Max limits off by 1. Fixed thanks to S. Creps: 881002 */
/* 1.1: Renamed clrbot() to clrtobot(). Reported by */
/* Eric Roscos: 870907 */
/* 1.0: Release: 870515 */
/****************************************************************/
#include <curses.h>
#include <curspriv.h>
char _curses_clrtobot_rcsid[] = "@(#)clrtobot.c v.1.4 - 900114";
/****************************************************************/
/* Wclrtobot() fills the right half of the cursor line of */
/* window 'win', and all lines below it with blanks. */
/****************************************************************/
int wclrtobot(win)
WINDOW *win;
{
short y;
short minx;
static short startx;
static short *ptr;
static short *end;
static short *maxx;
static short blank;
blank = ' ' | (win->_attrs & ATR_MSK);
startx = win->_curx;
for (y = win->_cury; y <= win->_regbottom; y++)
{
minx = _NO_CHANGE;
end = &win->_line[y][win->_maxx - 1];
for (ptr = &win->_line[y][startx]; ptr <= end; ptr++)
{
if (*ptr != blank)
{
maxx = ptr;
if (minx == _NO_CHANGE)
minx = (int) (ptr - win->_line[y]);
*ptr = blank;
} /* if */
} /* for */
if (minx != _NO_CHANGE)
{
if ((win->_minchng[y] > minx) || (win->_minchng[y] == _NO_CHANGE))
win->_minchng[y] = minx;
if (win->_maxchng[y] < (int) (maxx - win->_line[y]))
win->_maxchng[y] = (int) (maxx - win->_line[y]);
} /* if */
startx = 0;
} /* for */
return(OK);
} /* wclrtobot */
/****************************************************************/
/* Clrtobot() fills the right half of the cursor line of */
/* stdscr, and all lines below it with blanks. */
/****************************************************************/
int clrtobot()
{
return(wclrtobot(stdscr));
} /* clrtobot */
/****************************************************************/
/* Mvclrtobot() moves the cursor to a new position in stdscr */
/* and fills the right half of the cursor line, and all lines */
/* below it with blanks. */
/****************************************************************/
int mvclrtobot(y,x)
int y;
int x;
{
if (wmove(stdscr,y,x) == ERR)
return(ERR);
return(wclrtobot(stdscr));
} /* mvclrtobot */
/****************************************************************/
/* Mvwclrtobot() moves the cursor to a new position in window */
/* 'win', and fills the right half of the cursor line, and all */
/* lines below it with blanks. */
/****************************************************************/
int mvwclrtobot(win,y,x)
WINDOW *win;
int y;
int x;
{
if (wmove(win,y,x) == ERR)
return(ERR);
return(wclrtobot(win));
} /* mvwclrtobot */